package com.hj.javase;

/**
 * @Author : hujing
 * @Date: 2025/7/30 14:02
 * @Description:
 * 单例模式：
 * 1.饿汉式：在类加载时就创建对象，不管你用不用，都创建一次。
 */
public class SingleClassDemo1 {
    // 1.饿汉式：在类加载时就创建对象，不管你用不用，都创建一次。
//    // 在类加载的时候就创建实例
//    private static final SingleClass INSTANCE = new SingleClass();
//    // 私有构造函数，放置外部实例化
//    private SingleClass(){}
//    // 提供一个静态方法获取实例
//    public static SingleClass getInstance(){
//        return INSTANCE;
//    }
    
    // 2.懒汉式：在第一次使用时才创建对象实例，通过同步方法来保证线程安全。
//    private static SingleClass instance;
//    private SingleClass(){}
//    public static synchronized SingleClass getInstance(){
//        if (instance == null){
//            return new SingleClass();
//        }
//        return instance;
//    }
    
    //3.双重锁检查锁定（DCL，即double-checked locking）：是在懒汉式的基础上进行优化，减少同步的开销，提高性能。
//    private static volatile SingleClass instance;
//    private SingleClass(){}
//    public static SingleClass getInstance(){
//        if (instance == null){
//            synchronized (SingleClass.class){
//                if (instance == null){
//                    instance = new SingleClass();
//                }
//            }
//        }
//        return instance;
//    }
    
    //4.静态内部类：通过静态内部类来实现单例模式。
//    private SingleClass(){}
//    //静态内部类，用于创建单例实例
//    private static class SingletonInstance{
//        private static final SingleClass INSTANCE = new SingleClass();
//    }
//    public static SingleClass getInstance(){
//        return SingletonInstance.INSTANCE;
//    }
}
